﻿<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <!-- 事件函数: 由事件触发的函数 -->
    <button onclick="test()">点击1</button>
    <button onclick="test()">点击2</button>
    <script>
        function test() {
            console.log("test", this);
        }
        // 全局函数 : 由window调用的函数
        // test()

        // // 回调函数: 作为参数的函数
        // setTimeout(test,2000);

        // // 构造函数: 通过new 调用的函数
        // var a = new test();
        // 构造函数
        // 使用new关键字创建实例对象
        // 首字母大写(默认)
        // this在构造函数中指向当前实例对象
        function Run(name) {
            // console.log(this); //{}
            this.name = name;
            // console.log(this); //{name:"lili"}
        }
        Run.prototype.fun1 = function () {
            console.log("这是原型对象中添加的方法fun1", this);
        }
        Run.prototype.fun2 = function () {
            console.log("这是原型对象中添加的方法fun1", this);
        }

        var a = new Run("lili");
        console.log("aaaa", a); //{name:lili}

        a.fun1();

        // var b = new Run("nana");
        // console.log("bbbb",b); //{name:nana}

        // b.fun1();


        function Run2(name2) {
            Run.call(this, name2);
        }
        Run2.prototype = Object.create(Run.prototype);
        Run2.prototype.constructor = Run2;
        var c = new Run2("张三");
        // constructor 获取创建标签对象的构造函数
        console.log(c);
        console.log(c.constructor);
        c.fun1();

    </script>
</body>
</html>